package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.example.myapplication.bean.User;
import com.example.myapplication.dao.MySQLiteOpenHelper;
import com.example.myapplication.databinding.ActivityMainLoginBinding;
import com.example.myapplication.service.SharedPreferencesService;

import java.io.File;

/**
 * 登录主界面
 */
public class MainActivityLogin extends AppCompatActivity {

    // 绑定布局文件的变量
    private ActivityMainLoginBinding loginBinding;
    // 用于启动其他Activity的Intent对象
    private Intent intent;
    // 用户账号是否存在
    private boolean isRole = false;

    private MySQLiteOpenHelper mySQLiteOpenHelper;

    /**
     * 主要负责初始化界面组件和处理登录逻辑
     * @param savedInstanceState 保存的实例状态
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_login); // 设置主界面布局
        // 使用数据绑定库 inflate 布局
        loginBinding = ActivityMainLoginBinding.inflate(getLayoutInflater());
        setContentView(loginBinding.getRoot());  // 设置布局的根视图

        // 登录按钮点击事件处理
        loginBinding.loginBtn.setOnClickListener(view -> {
            // 获取账号和密码输入框的文本，并去空格
            String roleName = loginBinding.loginAccount.getText().toString().trim();
            String password = loginBinding.loginPassword.getText().toString().trim();
            // 如果账号和密码都不为空
            if (roleName.isEmpty() || password.isEmpty()) {
                // 账号或密码为空，显示提示信息
                Toast.makeText(MainActivityLogin.this, "账号或密码不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
            mySQLiteOpenHelper = new MySQLiteOpenHelper(this);
            User user = mySQLiteOpenHelper.queryUserByAccount(roleName);
            if (user != null) {
                // 标记用户已存在
                isRole = true;
                if (user.getPassword().equals(password)) {
                    // 账号和密码匹配，跳转到主页面
                    SharedPreferencesService.saveUserInfo(this, user.getUserId(), roleName, password);
                    intent = new Intent(this, MainActivity2PageView.class);
                    startActivity(intent);
                    finish();
//                        startActivityIfNeeded(intent, 1);
                } else {
                    Toast.makeText(MainActivityLogin.this, "账号或密码错误", Toast.LENGTH_SHORT).show();
                }
            }else {
                Toast.makeText(MainActivityLogin.this, "账号不存在", Toast.LENGTH_SHORT).show();
            }
        });

        // 没有账号，点击事件处理，跳转到注册页面
        loginBinding.noAccount.setOnClickListener(view -> {
            intent = new Intent(this, MainActivityRegister.class); // 创建跳转到注册页面的Intent
            startActivity(intent);  // 启动新的Activity
            finish();   // 结束当前Activity
        });

        // 忘记密码点击事件处理
        loginBinding.forgotPassword.setOnClickListener(view -> {
            // 判断用户账号是否存在
            if (isRole) {
                // 如果账号存在，利用Intent跳转到修改密码页面的Activity
                intent = new Intent(this, MainActivityUpdate.class);
                startActivity(intent);
            } else {
                // 账号不存在，显示提示信息
                Toast.makeText(MainActivityLogin.this, "账号不存在", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void deleteDB() {
        // 删除数据库
        String TAG = "MainActivity:deleteDB";
        String DATABASE_NAME = "address_book.db";
        // 获取数据库文件路径
        Context context = getApplicationContext();
        String databasePath = context.getDatabasePath(DATABASE_NAME).getPath();

        // 关闭数据库连接
        SQLiteDatabase database = SQLiteDatabase.openDatabase(databasePath, null, SQLiteDatabase.OPEN_READWRITE);
        database.close();

        // 删除数据库文件
        File databaseFile = new File(databasePath);
        if (databaseFile.exists()) {
            boolean deleted = databaseFile.delete();
            if (deleted) {
                Log.d(TAG, "数据库文件已成功删除");
            } else {
                Log.d(TAG, "数据库文件删除失败");
            }
        } else {
            Log.d(TAG, "数据库文件不存在");
        }
    }
}